UNIX MAGAZINE 1999年12月号

キーフレーズ

UNIX MAGAZINE RFC Linux http:// Web 1999 プログラム 文字列 000 コマンド ファイル サーバー システム www swatch IMAP Alpha 場合 メールポックス 処理 ADSL () クライアント ネットワーク html 利用 対応 RAID code xstr .com usr メッセージ -3 for 2000 FreeBSD データ メール インストール サービス -1 Windows NT print 機能 Windows local インターフェイス インターネット CGI 証明書 トラフィック アクセス LVD SCSI 日本 -2 URL 接続 アプリケーション Java torture ページ LIST default Subject 電子メール 必要 本体価格 SRM プロトコル Base ディスク CD-ROM 可能 traceroute INTERFACE bin 定義 file できる 指定 messages 実行 MHz 用い HTML 800 サイト 設定 使っ CPU 最大 ファームウェア ソフトウェア Time

目次

インタ リスト 1 wtangle. html く html> く e ad> く tit1e>Web 上での「文芸的プログラミング」く /title> く style type="text/css"> div. gray { background : #cOc0cO ; padding: 0 0 0 0 ; border—width : 0 ; border : none ; margin: 0 0 0 0 ; font—size: sma11; div . border { background : white ; padding: 0 0 0 0 ; border—width : 0 ; border: thin solid black; margin: 0 0 0 0 ; font—size : sma11; h3 { C010r : black; background : white ; padding: 7 7 7 7 ; border—width: 0 ; border : thick solid blue ; margin: 0 0 0 0 ; font—size: sma11; く /style> く /head> く body bgcolor=white> く hl > Web 上での「文芸的プログラミング」く / hl > く div align=right> く a href="http://www.csl.sony ・ co ・ jp/-masui/"> 増井俊之く /a> く br> く a href = " http : / / www. csl. sony ・ co ・ jp ” > ソニーコンビュータサイエンス研究所く / a > く /div> く hr > く 2 > 文芸的プログラミングとはく / 2 > 「く b > 文芸的プログラミングく / b > 」とは、 スタンフォード大学のく b > Dona1d Knuth く /b> が提唱している、 プログラムの作成とその文書化を同時におこなう手法で、 プログラムとその解説文書をひとつのファイルに混在させながら 追加したり修正したりして同時に開発していくことにより、 完全に整合性のとれた文書とプログラムを開発しようというものである。 プログラムをます作ってからその解説文書を作成する ( またはその逆 ) という 一般的な手法では、後で修正などを加える場合などは注意しないと 両者の整合性がとれなくなってしまうことがよくあるが、 文芸的プログラミングの手法では 両者がひとつのファイルになっているので そのようなことが起こりにくくなる。 また正しい文書を書くという作業と正しいプログラムを書くという作業の UNIX MAGAZINE 1999.12 ーフェイスの街角の 171

0 ・ tangle 、コンノヾイル、実行テスト、フィードノヾックと 相当します ) を WEB on Web でした例を示します。 いう区しが煩わしい。 HTML ソース ・ weave 、、 dviware(xdvi や dvi2ps など ) といっ WEB on Web システムを用いて wtangle について た手順を踏まなければ出力できない。 説明した文書 wtangle. html を末尾のリスト 1 に示しま ・解説部やプログラム部に整形のため窈旨令を入れなけれ す。 <pre file =... > と </pre> に囲まれた部分カワ。ログ はならない。 ラムです。この HTML ファイルを wtangle で処理する ・マクロ定義機能が分かりにくい。 と、 wtangle プログラムカ射出されます。 プログラムを分割した場合、それがすべてモジュールと みなされて新たな段落になってしまう。 フラウサでの表示 ・ 1 つのプログラミング言語にしカ硬えない。 リスト 1 の HTML ファイルは、 Web プラウサでは ・出力には ' I しか使えない。 図 3 ~ 5 のように表示されます。 <div> や <table> のな 分割コンパイルかて、きない。 かなど、任意の場所にプログラムを書けるので、枠を付け たり表にしたり背景に着色したりと、さまざまな表示ガ去 が尺できます。 率直にいって、プログラムを WEB システムの形式で 書いたり、あるいは HTML で記述するのはかなり面倒 です。その未では、普通のプログラム開発に文芸的プロ グラミングの手法を適用するのはちょっと無理があるかも しれません。しかし、オープンソースとしてプログラムを 公開する場合や、プログラミングの角見をしたり解説書を 執筆するようなときは役に立つのではないでしようか。き ちんとした図や解説文書を作るのは手間のかかる作業です が、プログラムに丁錨きの GIF 画象を添付するだけでも、 あとでプログラムを読み返すときに役立ちますし、説明や 嬲里情報などへのリンクも手軽に付けることができます。 他人に見せる機会のあるプログラムや、将来再利用する 可能性があったり、複雑なアルゴリズムを用いたプログラ ムなどについては WEB on Web は有効なシステムでは ないかと思います。 ( ますい・としゆきソニ—CSL) [ 文献 ] [ 1 ] Donald E. Knuth, "Literate Programming ” , Com- puter ノ 0 盟 , May 1984 邦訳 : 黒川利明訳「文芸ワ。ログラミング」、 bit 1985 年 4 月 号 ( 『文芸ワ。ログラミング』 ( アスキー、 1994 年 ) にも戸刑幻 [ 2 ] 増イ夋之 rperl 書た、アスキー、 1993 年 7 月 WEB on Web そこで、文芸的プログラミングの考え方を活かしつつ、 WEB システムの短所をできるかぎり取り除いた WEB on 、 veb システムを作ってみました。これは、特殊な WEB 形式の文書ファイルを使うのではなく、プログラ ムとその説明を HTML 当するものです。プログラム を HTML ファイルのなかに言当主すれば weave 関連プロ グラムは不要になりますし、編集したファイルをすぐにプ ラウサで眺めることもできます。 このシステムでは、以下のような規則に従って HTML ファイルをします。 ・ HTML ファイルのなかにプログラムとその説明を両方 己する。 プログラムは、 <pre> と < / pre > で囲まれた部分に記 述する。 プログラム・ファイルの名前は、 <pre> タグのなかで <pre file=foo. c>" のように指定する。複数のファイ ルをカンマで区切って列挙してもよい。 プログラムの部分を切り出すプログラムは必要ですか、 <pre> と < / pre > のあいだを対象とすればいいので、 く簡単なものですみます。 おわりに 一三ロ WEB on Web の例 HTML ファイルからプログラム部を切り出すための、 Perl フログラム wtangle(WEB システムの tangle に 170 UNIX MAGAZINE 1999.12

インターフェイスの街角 図 2 weave により得られた文書出力 1. CWEB のサンプルテキスト . これは CWEB の使い方を簡単に説明するためのテキストです。 CWEB のサンプルテキスト 2. この関数を呼ぶとメッセージを表示したあと終了します。 な : 2. ル 0 : 3. max れ : 3 , 4. 7 〃佖をれ : 4. ⅲた : 3 , 4. 加ⅷ 2. / 観 : 2. e ェ雇 : 2. int m ; m れ ( ) { く初期化処理 3 〉 .. int 雇わ 2 ; 4. これがメインプログラムです。 このコードの使われているのは、 section4 社血わ託 d = ル 0 ; ma ェれ = 1000 3. く初期化処理 3 〉三 加厖れな % s \ n ” , s); e ェ雇 ( 1 ) ; 扉 ( s ) らプログラム部が始まります。 はモジュールのマクロ定義で、 1 、@くモジュール名@> " で 、@< モジュール名@> = とに章が立てられて、目次や索引も備えた完全なドキュメ ントが生成されます。このように、 1 つの WEB ファイ ルから、プログラムとその解説文書の両方が生成できるの です。 Pascal の代わりに C を用いる CWEB の文書の例を 以下に示します。 @* CWEB のサンプルテキスト . これは CWEB の使い方を簡単に説明するためのテキストです。 この関数を呼ぶとメッセージを表示したあと終了します。 fprintf (stderr, "%s\n" (s) ; fatal(s) char *s; @c int initialized; @c これがメインプログラムです maxlin = 1000 ; initialized = NO ; く初期化処理@> = exit(l); main() int maxlin; く初期化 . 、、@凵 " ( 凵は空白 ) からモジュールの解説部が、 UNIX MAGAZINE 1999.12 、、@c " か 呼び出せます。モジュール名が長い場合は、呼び出すとき " として後ろを省略することができます。これら ・ソースカ売みにくくなる。 ます [ 2 ] 。 んこれは、次のようなま可斤もあるためではないかと思い 名ですが、そのわりには使っている人をあまりみかけませ WEB はプログラミングに効果的なシステムとして有 WEB の問題点 や索引も作成されています。 を太字にするといった整形がおこなわさらに相互参照 カカ碍られます。モジュールごとに節を改め、キーワード 前掲の WEB 文書を weave で処理すると、図 2 の出 の区しによっておこなわれます。 ンノヾイノレ→テスト WEB 文書の編集→ tangle によるプログラム抽出→コ プログラムの開発は、 れています。 のほかにも、整形処理のためのコマンドがいくつか用意さ 169